Software development is generally, the end-to-end process of creating software programs for a system, embodying stages throughout a systems development life cycle. The traditional model of development, such as the waterfall model, may include the phases of identification of required software, analysis and specification of software requirements, software design, programming (i.e., coding), testing, and maintenance of code. Software project management includes involvement of the end users, communication among customers/clients, users, and software developers, articulation of project goals, accurate estimation of resources, and specification of system requirements.